package org.jeecg.modules.music.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.api.vo.album.AlbumDetail;
import org.jeecg.modules.api.vo.album.AlbumVo;
import org.jeecg.modules.api.vo.songlist.SonglistDetailVo;
import org.jeecg.modules.api.vo.songlist.SonglistRelatedVo;
import org.jeecg.modules.api.vo.songlist.TagVo;
import org.jeecg.modules.music.entity.MusAlbumSong;
import org.jeecg.modules.music.entity.MusSong;
import org.jeecg.modules.music.entity.dto.HomeMusCountDto;
import org.jeecg.modules.music.entity.vo.HomeAlbumsVo;
import org.jeecg.modules.music.entity.vo.HomeBannerVo;
import org.jeecg.modules.music.entity.vo.HomeHotAlbumsVo;
import org.jeecg.modules.music.model.MusSongListCategoryModel;

import java.util.List;

public interface IMusAlbumSongListService extends IService<MusAlbumSong> {

    void addAlbumSong(MusAlbumSong albumSong);

    IPage<MusSongListCategoryModel> queryAlbumSongByOrgCode(String musCode, MusAlbumSong albumSong, IPage page);

    IPage<MusAlbumSong> querySongListPage(Page<MusAlbumSong> page, String musCode, MusAlbumSong albumParams);

    boolean deleteAlbum(String id);

    boolean deleteBatchAlbums(String ids);

    void editAlbumSong(MusAlbumSong songList);

    IPage<MusSong> querySongDetailPage(Page<MusSong> page, String songId, MusSong songParams);

    boolean deleteListSong(String songlistId, String songId);

    IPage<MusSong> queryNoSongDetailPage(Page<MusSong> page, String songlistId, MusSong songParams);

    boolean saveSongs(String songlistId, String songIds);

    boolean deleteListSongBatch(String songlistId, String songIds);

    List<HomeBannerVo> queryHomeBanner(String type);

    List<HomeAlbumsVo> queryHomeHotAlbums(String type,String limit,String area);

    List<HomeHotAlbumsVo> queryHotAlbumsAll();

    AlbumVo queryAlbumVoDetail(String albumId);

    AlbumDetail queryAlbumDetail(String id);

    List<AlbumDetail> querySingerAlbums(String albumId, String artistId, Integer limit, Integer offset);

    SonglistDetailVo reqPlayListDetail(String id);

    List<TagVo> getSonglistTags(String categoryIds);

    List<SonglistRelatedVo> querySonglistRelated(String id);

    List<SonglistDetailVo> queryCatPlayList(String cat, Integer limit, Integer offset);

    List<AlbumDetail> queryAlbums(String area, Integer offset, Integer limit);

    List<AlbumDetail> searchSuggestAlbums(String keywords);

    List<AlbumDetail> searchAlbums(String keywords, Integer limit, Integer offset);

    List<SonglistDetailVo> searchPlaylists(String keywords, Integer limit, Integer offset);

    List<SonglistDetailVo> getUserSonglist(String uid);

    List<AlbumDetail> queryAlbumsByUser(String uid);

    List<SonglistDetailVo> getUserMake(String uid);

    SonglistDetailVo queryPlayListUser(String id);

    List<HomeMusCountDto> queryGroupRecommend();

    List<HomeMusCountDto> queryGroupArea();

    List<HomeMusCountDto> queryGroupRecommendAlbums();

    List<HomeMusCountDto> queryGroupAreaAlbums();
}
